import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Field;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface Entity{
    String value() default "";
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD,ElementType.METHOD})
@interface  ID{
    String value() default "";
}
@Entity("t_user")
class User{
    @ID("uid")
    private Integer id;
}
public class AnootationTests {
    public static void main(String[] args) throws NoSuchFieldException {
//        1、获取user类上的entity的类容
//        1、1获取字节码对象
//        Class<?> targetCl = Class.forName();//括号内包名.类名
        Class<?> targetCls =User.class ;
//        1.2获取user类上的entity注解
        Entity entity = targetCls.getAnnotation(Entity.class);
//         1.3获取entity的value属性
        String enValue = entity.value();
        System.out.println(enValue);

        String entityValue = User.class.getAnnotation(Entity.class).value();
        System.out.println(entityValue);

//        2.获取user类中id属性上的注解IDvalue属性值
//        2.1 user类中的id属性
        Field f = targetCls.getDeclaredField("id");
//        2.2获取id属性上的ID注解
        ID id = f.getAnnotation(ID.class);
//        2,3获取id注解中value属性的值
        String idValue = id.value();
        System.out.println(idValue);
    }

}
